package com.xiaohua.api.service;

import com.xiaohua.common.core.domain.AjaxResult;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 文档转换服务接口
 *
 * @author 小花
 * @date 2025-03-29
 */
public interface IXhDocumentService {
    
    /**
     * PDF转Word - 文件上传方式
     *
     * @param file PDF文件
     * @param formulaEnhancement 是否开启公式识别增强
     * @return 转换结果
     */
    AjaxResult convertPdfToWord(MultipartFile file, Boolean formulaEnhancement) throws Exception;
    
    /**
     * PDF转Word - Base64编码方式
     *
     * @param fileBase64 PDF文件的Base64编码
     * @param formulaEnhancement 是否开启公式识别增强
     * @return 转换结果
     */
    AjaxResult convertPdfToWordByBase64(String fileBase64, Boolean formulaEnhancement) throws Exception;
    
    /**
     * PDF转Word - URL方式
     *
     * @param fileUrl PDF文件的URL
     * @param formulaEnhancement 是否开启公式识别增强
     * @return 转换结果
     */
    AjaxResult convertPdfToWordByUrl(String fileUrl, Boolean formulaEnhancement) throws Exception;
    
    /**
     * 图片转Word - 文件上传方式
     *
     * @param files 图片文件列表
     * @param imageNameExtension 图片后缀名
     * @return 转换结果
     */
    AjaxResult convertImageToWord(List<MultipartFile> files, String imageNameExtension) throws Exception;
    
    /**
     * 图片转Word - Base64编码方式
     *
     * @param fileBase64List 图片文件的Base64编码列表
     * @param imageNameExtension 图片后缀名
     * @return 转换结果
     */
    AjaxResult convertImageToWordByBase64(List<String> fileBase64List, String imageNameExtension) throws Exception;
    
    /**
     * 图片转Word - URL方式
     *
     * @param imageUrls 图片文件的URL列表
     * @param imageNameExtension 图片后缀名
     * @return 转换结果
     */
    AjaxResult convertImageToWordByUrl(List<String> imageUrls, String imageNameExtension) throws Exception;
    
    /**
     * PDF转图片 - 文件上传方式
     *
     * @param file PDF文件
     * @return 转换结果
     */
    AjaxResult convertPdfToImage(MultipartFile file) throws Exception;
    
    /**
     * PDF转图片 - Base64编码方式
     *
     * @param fileBase64 PDF文件的Base64编码
     * @return 转换结果
     */
    AjaxResult convertPdfToImageByBase64(String fileBase64) throws Exception;
    
    /**
     * PDF转图片 - URL方式
     *
     * @param fileUrl PDF文件的URL
     * @return 转换结果
     */
    AjaxResult convertPdfToImageByUrl(String fileUrl) throws Exception;
    
    /**
     * 图片转PDF - 文件上传方式
     *
     * @param files 图片文件列表
     * @param imageNameExtension 图片后缀名
     * @return 转换结果
     */
    AjaxResult convertImageToPdf(List<MultipartFile> files, String imageNameExtension) throws Exception;
    
    /**
     * 图片转PDF - Base64编码方式
     *
     * @param fileBase64List 图片文件的Base64编码列表
     * @param imageNameExtension 图片后缀名
     * @return 转换结果
     */
    AjaxResult convertImageToPdfByBase64(List<String> fileBase64List, String imageNameExtension) throws Exception;
    
    /**
     * 图片转PDF - URL方式
     *
     * @param imageUrls 图片文件的URL列表
     * @param imageNameExtension 图片后缀名
     * @return 转换结果
     */
    AjaxResult convertImageToPdfByUrl(List<String> imageUrls, String imageNameExtension) throws Exception;
    
    /**
     * 获取文档转换结果
     *
     * @param taskId 转换任务ID
     * @return 转换结果
     */
    AjaxResult getDocumentConvertResult(String taskId) throws Exception;
    
    /**
     * Word转PDF - 文件上传方式
     *
     * @param file Word文件
     * @return 转换结果
     */
    AjaxResult convertWordToPdf(MultipartFile file) throws Exception;
    
    /**
     * Word转PDF - Base64编码方式
     *
     * @param fileBase64 Word文件的Base64编码
     * @return 转换结果
     */
    AjaxResult convertWordToPdfByBase64(String fileBase64) throws Exception;
    
    /**
     * Word转PDF - URL方式
     *
     * @param fileUrl Word文件的URL
     * @return 转换结果
     */
    AjaxResult convertWordToPdfByUrl(String fileUrl) throws Exception;
    
    /**
     * Word转图片 - 文件上传方式
     *
     * @param file Word文件
     * @return 转换结果
     */
    AjaxResult convertWordToImage(MultipartFile file) throws Exception;
    
    /**
     * Word转图片 - Base64编码方式
     *
     * @param fileBase64 Word文件的Base64编码
     * @return 转换结果
     */
    AjaxResult convertWordToImageByBase64(String fileBase64) throws Exception;
    
    /**
     * Word转图片 - URL方式
     *
     * @param fileUrl Word文件的URL
     * @return 转换结果
     */
    AjaxResult convertWordToImageByUrl(String fileUrl) throws Exception;
    
    /**
     * 文档加密 - 文件上传方式
     *
     * @param file 文档文件
     * @param password 密码
     * @param ownerPassword 所有者密码（PDF专用）
     * @return 加密结果
     */
    AjaxResult encryptDocument(MultipartFile file, String password, String ownerPassword) throws Exception;
    
    /**
     * 文档加密 - Base64编码方式
     *
     * @param fileBase64 文档文件的Base64编码
     * @param password 密码
     * @param ownerPassword 所有者密码（PDF专用）
     * @return 加密结果
     */
    AjaxResult encryptDocumentByBase64(String fileBase64, String password, String ownerPassword) throws Exception;
    
    /**
     * 文档加密 - URL方式
     *
     * @param fileUrl 文档文件的URL
     * @param password 密码
     * @param ownerPassword 所有者密码（PDF专用）
     * @return 加密结果
     */
    AjaxResult encryptDocumentByUrl(String fileUrl, String password, String ownerPassword) throws Exception;
} 